Basic Authentication হল একটি প্রমাণীকরণ পদ্ধতি, যেখানে ক্লায়েন্টের username এবং password Base64 Encoding ফরম্যাটে HTTP হেডারে প্রেরণ করা হয়। Spring Security-তে Basic Authentication কনফিগার করা খুব সহজ এবং এটি প্রাথমিক অথেন্টিকেশনের জন্য ব্যাপকভাবে ব্যবহৃত হয়।
Spring Security-তে Basic Authentication এর কনফিগারেশন ধাপসমূহ
১. Maven ডিপেনডেন্সি যোগ করা
pom.xml ফাইলে Spring Security এর জন্য প্রয়োজনীয় ডিপেনডেন্সি যুক্ত করুন:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
২. Basic Authentication কনফিগারেশন
Spring Security ব্যবহার করে Basic Authentication কনফিগার করতে নিচের ধাপগুলো অনুসরণ করুন:
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
import org.springframework.security.crypto.password.PasswordEncoder;
import org.springframework.security.web.SecurityFilterChain;
@Configuration
public class SecurityConfig {
@Bean
public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception {
http
.authorizeRequests()
.anyRequest().authenticated() // প্রতিটি রিকোয়েস্ট অথেন্টিকেশন প্রয়োজন
.and()
.httpBasic(); // Basic Authentication সক্রিয়
return http.build();
}
@Bean
public PasswordEncoder passwordEncoder() {
return new BCryptPasswordEncoder(); // পাসওয়ার্ড এনক্রিপশন
}
@Bean
public void configure(AuthenticationManagerBuilder auth) throws Exception {
auth
.inMemoryAuthentication()
.withUser("user") // ইন-মেমোরি ইউজার
.password(passwordEncoder().encode("password")) // পাসওয়ার্ড এনক্রিপ্ট করে সংরক্ষণ
.roles("USER")
.and()
.withUser("admin") // ইন-মেমোরি অ্যাডমিন
.password(passwordEncoder().encode("admin123"))
.roles("ADMIN");
}
}
৩. প্রাথমিক কনফিগারেশন ব্যাখ্যা
Basic Authentication সক্রিয় করা:
http.httpBasic();এটি Basic Authentication সক্রিয় করে এবং ক্লায়েন্টের HTTP রিকোয়েস্টের হেডার থেকে
Authorizationতথ্য যাচাই করে।- ইউজার এবং পাসওয়ার্ড সংরক্ষণ: ইন-মেমোরি অথেন্টিকেশন ব্যবহার করে ইউজার এবং পাসওয়ার্ড কনফিগার করা হয়েছে।
- PasswordEncoder ব্যবহার:
Spring Security ডিফল্টভাবে এনক্রিপ্ট করা পাসওয়ার্ড ব্যবহার করে। এখানেBCryptPasswordEncoderব্যবহার করা হয়েছে। এন্ডপয়েন্ট সুরক্ষা:
http.authorizeRequests().anyRequest().authenticated();সমস্ত এন্ডপয়েন্ট অথেন্টিকেশন ছাড়া অ্যাক্সেস করা যাবে না।
৪. application.properties ফাইলে অতিরিক্ত কনফিগারেশন (ঐচ্ছিক)
server.port=8080
spring.security.user.name=defaultUser
spring.security.user.password=defaultPass
৫. Basic Authentication পরীক্ষা করা
Postman দিয়ে পরীক্ষা:
- GET রিকোয়েস্ট প্রেরণ:
- URL:
http://localhost:8080/your-endpoint - Authentication ট্যাবে গিয়ে
Basic Authনির্বাচন করুন। - Username:
user - Password:
password
- URL:
HTTP Header: HTTP রিকোয়েস্টের হেডারে একটি
Authorizationহেডার প্রেরণ করা হবে:Authorization: Basic dXNlcjpwYXNzd29yZA==এখানে
dXNlcjpwYXNzd29yZA==হলuser:passwordএর Base64 Encoding।
৬. Advanced Configuration: Role-Based Access Control
Spring Security-তে রোল ভিত্তিক অ্যাক্সেস কনফিগার করা যায়।
http
.authorizeRequests()
.antMatchers("/admin/**").hasRole("ADMIN") // শুধুমাত্র ADMIN রোলের জন্য
.antMatchers("/user/**").hasRole("USER") // শুধুমাত্র USER রোলের জন্য
.anyRequest().authenticated()
.and()
.httpBasic();
৭. CSRF সুরক্ষা
Basic Authentication API-এর জন্য CSRF Protection সাধারণত নিষ্ক্রিয় করা হয়, কারণ এটি স্টেটলেস (stateless) অ্যাপ্লিকেশনের জন্য উপযুক্ত নয়।
http.csrf().disable();
উপসংহার
Spring Security দিয়ে Basic Authentication কনফিগার করা সহজ এবং দ্রুত কার্যকর হয়। এটি মূলত ছোট REST APIs বা স্টেটলেস অ্যাপ্লিকেশনের জন্য আদর্শ। বড় বা বেশি সুরক্ষিত অ্যাপ্লিকেশনগুলির জন্য OAuth2, JWT, বা Session-Based Authentication ব্যবহার করার পরামর্শ দেওয়া হয়।
Read more